In [56]:
from IPython import parallel
import numpy

c = parallel.Client()
dv = c[:]
dv.block = True
lv = c.load_balanced_view()
lv.block = True
with dv.sync_imports():
    from time import sleep

n_engines = len(dv)
n_per_engine = 5
times = numpy.random.random(n_engines * n_per_engine)
print 'total:', times.sum()
print 'direct:', max(arr.sum() for arr in numpy.split(times, n_engines))
print 'optimal:', times.sum() / n_engines
print times


importing sleep from time on engine(s)
total: 2.4434907354
direct: 2.15611276886
optimal: 1.2217453677
[ 0.10898006  0.00155746  0.01812814  0.06608185  0.09263046  0.49210495
  0.37820307  0.41992805  0.63172591  0.23415078]

In [57]:
def f (t):
    sleep(t)

%timeit dv.map(f, times)
%timeit lv.map(f, times)


1 loops, best of 3: 2.17 s per loop
1 loops, best of 3: 1.26 s per loop